/**
  ******************************************************************************
  * @file    main.c
  * @author  ashuai0110
  * @version V2.0
  * @date    2024-09-04
  * @brief   使用举例-消息队列
  *
  ******************************************************************************
  * @attention
  *
  * 版权声明:内容为编者(ashuai0110)原创,使用请注明出处,当然,你也可以不这样做^_^
  * 出处链接:https://gitee.com/ashuai0110/mcu_reuse_development_module
  *
  ******************************************************************************
  */

/* 包含头文件-----------------------------------------------------------------*/
#include "bsp.h"

#include "message_queue.h"

/* 私有宏定义-----------------------------------------------------------------*/

/* 私有类型定义---------------------------------------------------------------*/

/* 私有变量-------------------------------------------------------------------*/
static mes_queue_t testMQ; /* 测试消息队列实例 */

/* 全局变量-------------------------------------------------------------------*/

/* 私有函数原型---------------------------------------------------------------*/


/**
  * @brief  main
  */
int main(int argc, char *argv[])
{
    MW_VER_LOG("example-message_queue", 2, 0, 0);

    /* BSP初始化 */
    bsp_init();

    uint8_t ret = 0;
    char testMes[] = "hello world!";
    char mesBuf[20];
    uint8_t mesLen = 0;
    uint8_t mesCnt = 0;

    /* 消息队列初始化 10条消息 */
    mes_queue_init(&testMQ, 10);
    
    /* 填充12条消息 会有2条填充失败 */
    for(uint8_t cnt = 0; cnt < 12; cnt++)
    {
        ret = mes_queue_write(&testMQ, testMes, 3 + cnt);
        if(MW_RET_OK != ret)
        {
            MW_ERROR_LOG("mes_queue_write failure");
        }
    }
    
    /* 循环读取消息队列直至读取失败 */
    while(MW_RET_OK == mes_queue_read(&testMQ, mesBuf, (uint32_t *)&mesLen))
    {
        mesBuf[mesLen] = 0;
        MW_DEBUG_LOG("message %d:%s, len:%d", ++mesCnt, mesBuf, mesLen);
    }
    
    /* 消息队列取消初始化 释放内存 */
    mes_queue_de_init(&testMQ);
    
    while(1)
    {

    }
}

